package dao.impl;

import dao.StaffsDao;
import entity.Staffs;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import c3p0Util.C3p0Util;

import java.sql.SQLException;
import java.util.List;

/**
 *  员工 DAO 接口的实现类 - 基于原生 DbUtils 实现
 * @Author lzp
 * @Date 2024-03-12
 */
public class StaffDaoImpl4DbUtil implements StaffsDao {

    // 第一：实例化 QueryRunner - 操作 SQL 语句
    QueryRunner qr = new QueryRunner(C3p0Util.getDataSource());

    @Override
    public List<Staffs> selectAll() {
        return null;
    }

    @Override
    public int insert(Staffs staffs) {
        return 0;
    }

    @Override
    public int delete(int id) {
        return 0;
    }

    @Override
    public int update(Staffs staffs) {
        return 0;
    }

    @Override
    public Staffs selectId(int id) {
        return null;
    }

    @Override
    public List<Staffs> selectAdPage(int limit, int count) {
        // 第二：定义要操作数据库的SQL语句
        String sql = "select id,name,age,phone,pos as Pos,add_time as addTime,update_time as updateTime from staffs limit ?,?";

        // 第三：执行 - BeanListHandler 对查询的结果进行自动处理、封装返回一个List<Staff>集合 -- 反射-
        List<Staffs> list = null;
        try {
            // ResultSetHandler VS BeanListHandler
            // ResultSetHandler 结果集处理器，通过实现此接口来对结果集数据进行处理
            // BeanListHandler 是 ResultSetHandler 接口的其中一个实现类
            Object[] params = {limit,count} ;

            list = qr.query(sql, new BeanListHandler<Staffs>(Staffs.class), params);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return list;
    }
}
